package com.legendframework.core.cmd.paramer.converter;

import com.legendframework.core.ioc.IParameter;
import org.bukkit.command.CommandSender;

import java.lang.reflect.Field;
import java.lang.reflect.Parameter;

/**
 * 参数转换器接口
 */
public interface ParamerConverter<T> {

    /**
     * 校验这个行参是否符合这个转换器
     * @return
     */
    boolean check(Class<?> cls);

    /**
     * 转换类型
     *
     * 不要以 {@link IParameter} 为需转换的类型
     * 真实的需要转换类型取 type , 因为考虑到泛型List等情况
     * {@link IParameter} 作用是取其注解进行扩展功能
     *
     * @param sender 发送者
     * @param message 消息
     * @param type 需要转换的类
     * @param parameter parameter
     * @return
     */
    T castParameter(CommandSender sender , String message ,Class<T> type , IParameter parameter);
}
